In today's storage environment, enterprise storage systems automatically generate two copies of data. One copy of the data typically functions as the primary copy and the second copy functions as a backup copy of the primary copy. The primary and secondary copies usually reside on separate devices. The primary copy of the data is always accessed for a read operation, and the secondary copy usually is not read. Determining which copy will function as the primary copy is usually a static decision. Once the primary copy is identified, it will remain the primary copy unless the primary device experiences technical difficulties and fails to function. The secondary copy is read “if and only if” the read of the primary copy fails. Reading the data sequentially like this provides the advantage of minimizing the total I/O bandwidth to the storage system.